Currying

Rozwijanie funkcji (ang. currying) – operacja w funkcyjnych językach programowania polegająca na przekształceniu funkcji, która pobiera parę argumentów i zwraca wynik w funkcję, która po pobraniu argumentu zwraca funkcję, która pobiera argument i zwraca wynik [1]. Operacja odwrotna nosi nazwę zwijanie funkcji (ang. uncurrying)[2].

Podstawą dla tej operacji jest ugruntowanie systemu typów w językach funkcyjnych na rachunku lambda z typami. Taki rachunek na mocy izomorfizmu Curry’ego-Howarda jest równoważny pewnej logice intuicjonistycznej, a zatem operacja ta odpowiada tautologii logiki intuicjonistycznej:

Oryginalna nazwa została zaproponowana przez Christophera Stracheya w 1967 roku, jako nawiązanie do nazwiska logika Haskella Curry’ego.

  1. Simpson 2020 ↓, s. 59–63.
  2. Simpson 2020 ↓, s. 68.

© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search